<?php
/**
 * Created by PhpStorm.
 * User: liaozidi
 * Date: 2019/1/4
 * Time: 22:20
 */
namespace app\shop\admin;
use app\admin\controller\Admin;
use app\common\builder\ZBuilder;

class GoodsAttr  extends Admin
{
    /**
     * 商品属性
     */
    public function index()
    {
        $list = db('attr')->alias('attr')->field('attr.*,type.name as type_name')
            ->join('goods_type type','type.id=attr.type_id')->order('attr.sort_order desc')->paginate(10);
        $page = $list->render();
        $item = $list->items();
        foreach ($item as $k=>$v) {
            if($v['attr_input_type']==0){
                $item[$k]['attr_input_type'] = '手工输入';
            }elseif ($v['attr_input_type']==1){
                $item[$k]['attr_input_type'] = '从列表中选择';
            }
        }
        $type_list =db('goods_type')->column('name','id');
        return ZBuilder::make('table')
            ->setPageTitle('商品属性列表')
            ->setPrimaryKey('attr_id')
            ->hideCheckbox()
            ->addTopSelect('type_id', '所有模型', $type_list)
            ->addColumns([
                ['attr_id', 'ID'],
                ['attr_name','属性名称'],
                ['type_name','所属模型'],
                ['attr_input_type','属性值的输入方式'],
                ['attr_values','可选值列表'],
                ['right_button','操作']
            ])
            ->addTopButton('add')
            ->addRightButtons('edit,delete')
            ->setPages($page)
            ->setColumnWidth([
                'attr_id'=>50
            ])
            ->setRowList($item)
            ->fetch();
    }

    /**
     * 添加商品属性
     */
    public function add()
    {
        if(request()->isPost()){
            $data = input('post.');
            $this->store($data);
        }
        $type_list =db('goods_type')->column('name','id');
        return ZBuilder::make('form')
            ->setPageTitle('添加商品属性')
            ->setUrl(url('add'))
            ->isAjax(false)
            ->addText('attr_name','商品属性名称','')
            ->addSelect('type_id','所属商品模型','', $type_list)
            ->addRadio('attr_input_type', '该属性值的录入方式', '', ['0' => '手工录入', '1' => '从下面的列表中选择（一行代表一个可选值）'],'0')
            ->addTextarea('attr_values','可选值列表','录入方式为手工或者多行文本时，此输入框不需填写。每个规格项之前用英文 , 逗号隔开')
            ->layout(['type_id' =>3])
            ->fetch();
    }

    /**
     * 添加商品属性
     */
    public function edit($id=0)
    {
        if(request()->isPost()){
            $data = input('post.');

            $this->store($data, $id);
        }
        $type_list =db('goods_type')->column('name','id');
        $data = db('attr')->where('attr_id',$id)->find();

        return ZBuilder::make('form')
            ->setPageTitle('添加修改商品属性')
            ->addHidden('id',$data['attr_id'])
            ->setUrl(url('edit'))
            ->isAjax(false)
            ->addText('attr_name','商品属性名称','')
            ->addSelect('type_id','所属商品模型','', $type_list)
            ->addRadio('attr_input_type', '该属性值的录入方式', '', ['0' => '手工录入', '1' => '从下面的列表中选择（一行代表一个可选值）', '2' => '多行文本框'],'0')
            ->addTextarea('attr_values','可选值列表','录入方式为手工或者多行文本时，此输入框不需填写。每个规格项之前用英文 , 逗号隔开')
            ->layout(['type_id' =>3])
            ->setFormData($data)
            ->fetch();
    }

    public function delete($ids = 0)
    {
        $res = db('attr')->where('attr_id',$ids)->delete();
        if($res){
            $this->success('删除成功','index');
        }else{
            $this->error('删除失败');
        }
    }


    private function store($data, $id = 0)
    {

        if($id == 0){
            $res = db('attr')->insert($data);
        }else{
            $res = db('attr')->where('attr_id',$id)->update($data);
        }

        if($res){
            $this->success('保存成功','index');
        }else{
            $this->error('保存失败，请重试');
        }
    }
}
